﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CapaLogica.CL.Usuario;
using System.Collections;

namespace CapaLogica.CL.Tema
{
    public  class Cl_Tema
    {
       
        private int _idTema;
       //
        public int IdTema
        {
            get { return _idTema; }
            set { _idTema = value; }
        }

        private int _idForo;
        //
        public int IdForo
        {
            get { return _idForo; }
            set { _idForo = value; }
        }

        // Declara el atributo de la clase Tema
        private string _nombre;
        // Métodos set and get de el atributo tema
        public string Nombre
        {
          get { return _nombre; }
          set { _nombre = value; }
        }

        ////Declara el atributo de la clase tema
        private DateTime  _fechaInicio;
        //Métodos set and get de el atributo tema
        public DateTime FechaInicio
        {
          get { return _fechaInicio; }
          set { _fechaInicio = value; }
        }

        ////Declara el atributo de la clase tema
        private DateTime _fechaFinal;
        //Métodos set and get de el atributo tema
        public DateTime FechaFinal
        {
          get { return _fechaFinal; }
          set { _fechaFinal = value; }
        }


        private Boolean abierto;

        public Boolean Abierto
        {
          get { return abierto; }
          set { abierto = value; }
        }

         private String _descripcion;
        /// <summary>
        /// Set y Get del atributo descripcion
        /// </summary>
        public String Descripcion
        {
            get { return _descripcion; }
            set { _descripcion = value; }
        }

        ////Declara el atributo de la clase tema
        private Boolean _calificacion;
        //
        public Boolean Calificacion
        {
          get { return _calificacion; }
          set { _calificacion = value; }
        }


        ////Declara el atributo de la clase tema
        private int _cantAportes;
        //Métodos set and get de el atributo tema
        public int CantAportes
        {
            get 
            {
                if (_cantAportes == -1)
                {
                    _cantAportes = new TemaPersistente().cantidadDeAportes(_idTema);
                }
                return _cantAportes; 
            }
        }


        private string _justificacion;

        public string Justificacion
        {
          get { return _justificacion; }
          set { _justificacion = value; }
        }


        private int cantMaxAportes;

        public int CantMaxAportes
        {
            get { return cantMaxAportes; }
            set { cantMaxAportes = value; }
        }

        ////Declara el atributo de la clase tema, la lista de estudiantes asociados a un tema
        private List<int> _listaEstudiante;
        //Métodos set and get de el atributo tema
        public List<int> ListaEstudiante
        {
          get { return _listaEstudiante; }
          set { _listaEstudiante = value; }
        }


        private int idDuenioForo;

        public int IdDuenioForo
        {
            get { return idDuenioForo; }
            set { idDuenioForo = value; }
        }

        //Constructor vacío
        public Cl_Tema()
        {
        }
        /// <summary>
        /// Constructor de la clase de tema
        /// </summary>
        /// <param name="pidTema"></param>
        public Cl_Tema(int pidTema)
        {
            _idTema = pidTema;
                    
        }


      
        public Cl_Tema(int pidTema, string pNombre, DateTime pFechaCreacion, 
            DateTime pFechaFin, string pDescripcion, Boolean pAbierto,
                        Boolean pCalificacion, String pJustificacion, int pCantMaxAportes)
        {
            _idTema = pidTema;
            _nombre = pNombre;
            _descripcion = pDescripcion;
            _fechaInicio = pFechaCreacion;
            _fechaFinal = pFechaFin;
            _calificacion = pCalificacion;
            _justificacion = pJustificacion;
            cantMaxAportes = pCantMaxAportes;
            _cantAportes = -1;
            abierto = pAbierto;
        }

        public Cl_Tema(string pNombre,  DateTime pFechaFin, string pDescripcion, Boolean pAbierto,
                         Boolean pCalificacion, String pJustificacion, int pCantMaxAportes)
        {
            _idTema = -1;
            _nombre = pNombre;
            _descripcion = pDescripcion;
            _fechaFinal = pFechaFin;
            _calificacion = pCalificacion;
            _justificacion = pJustificacion;
            cantMaxAportes = pCantMaxAportes;
            _cantAportes = -1;
            abierto = pAbierto;
        }

        public Cl_Tema(int pidtema, string pNombre, string pDescripcion, int pidforo, DateTime pFechaCreacion,
                        DateTime pFechaFin,Boolean pCalificacion, String pJustificacion)
                         
        {
            _idTema = pidtema;
            _nombre = pNombre;
            _descripcion = pDescripcion;
            _fechaInicio = pFechaCreacion;
            _fechaFinal = pFechaFin;
            _calificacion = pCalificacion;
            _justificacion = pJustificacion;
        }


        public Cl_Tema(int pidtema, string pNombre, string pDescripcion, int pidforo, DateTime pFechaCreacion,
                                DateTime pFechaFin, Boolean pCalificacion, String pJustificacion, int pcantMaxAportes)
        {
            _idTema = pidtema;
            _nombre = pNombre;
            _descripcion = pDescripcion;
            _idForo = pidforo;
            _fechaInicio = pFechaCreacion;
            _fechaFinal = pFechaFin;
            _calificacion = pCalificacion;
            _justificacion = pJustificacion;
            _cantAportes = pcantMaxAportes;
        }

     
        
    }
}
